package com.jsbs.iam.user.mapper;

import com.jsbs.iam.user.dto.ApplyConfigAddDto;
import com.jsbs.iam.user.dto.ApplyConfigDeleteDto;
import com.jsbs.iam.user.dto.ApplyConfigGetDto;
import com.jsbs.iam.user.dto.ApplyConfigSelectDto;
import com.jsbs.iam.user.entity.IamAdminRoleOrgInfo;
import com.jsbs.iam.user.entity.IamApplySystem;
import com.jsbs.iam.user.vo.ApplyAccountVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @BelongsProject: iam
 * @BelongsPackage: com.jsbs.iam.user.mapper
 * @Author: WangJiYuan
 * @Description: TODO
 * @Version: 2023-01-04  11:48
 */
@Mapper
@Repository
public interface ApplyConfigMapper {
    /**
     * 查询应用编码
     * @return
     */
    String selectApplyId(@Param("companyCode") String companyCode);

    /**
     * 新增应用数据
     * @param applyConfigAddDto
     */
    void insetApplyData(@Param("applyConfigAddDto") ApplyConfigAddDto applyConfigAddDto);

    /**
     * 获取应用数据
     * @param applyConfigSelectDto
     * @return
     */
    List<IamApplySystem> getApplyData(@Param("applyConfigSelectDto") ApplyConfigSelectDto applyConfigSelectDto);

    /**
     * 修改应用数据
     * @param applyConfigAddDto
     */
    void updateApplyData(@Param("applyConfigAddDto") ApplyConfigAddDto applyConfigAddDto);

    /**
     * 批量删除应用数据
     * @param applyConfigDeleteDto
     */
    void deleteApplyData(@Param("applyConfigDeleteDto") ApplyConfigDeleteDto applyConfigDeleteDto);

    /**
     * 通过应用查询所有菜单编码
     * @param applyConfigDeleteDto
     * @return
     */
    List<String> getMenuCodes(@Param("applyConfigDeleteDto")ApplyConfigDeleteDto applyConfigDeleteDto);

    /**
     * 删除菜单数据
     * @param applyConfigDeleteDto
     */
    void deleteMenuData(@Param("applyConfigDeleteDto")ApplyConfigDeleteDto applyConfigDeleteDto);

    /**
     * 通过菜单编码删除按钮数据
     * @param applyConfigDeleteDto
     */
    void deleteButtonData(@Param("applyConfigDeleteDto")ApplyConfigDeleteDto applyConfigDeleteDto);

    /**
     * 获取普通管理员的应用数据
     * @param applyConfigSelectDto
     * @return
     */
    List<IamApplySystem> getAdminRoleApplyData(@Param("applyConfigSelectDto")ApplyConfigSelectDto applyConfigSelectDto);

    /**
     * 通过用户数据查询用户详细数据
     * @param applyConfigGetDto
     * @return
     */
    List<ApplyAccountVo> getUserInfo(@Param("applyConfigGetDto")ApplyConfigGetDto applyConfigGetDto);

    /**
     * 通过管理员角色获取组织编码
     * @param applyConfigGetDto
     * @return
     */
    List<IamAdminRoleOrgInfo> getOrgCodeByRole(@Param("applyConfigGetDto") ApplyConfigGetDto applyConfigGetDto);

    /**
     * 获取应用对应的组织编码
     * @param applyConfigGetDto
     * @return
     */
    List<String> getApplyOrgCodes(@Param("applyConfigGetDto")ApplyConfigGetDto applyConfigGetDto);

    /**
     * 通过应用类型编码查询应用编码
     * @param applyTypeCode
     * @param companyCode
     * @return
     */
    List<String> getApplyCodes(@Param("applyTypeCode")String applyTypeCode, @Param("companyCode")String companyCode);
}
